/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package dao;

import bentity.beCliente;
import bentity.beLote;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author chokewanka
 */
public class daoLote {
    public int registrarLote(beLote lote) throws Exception{
        Connection conn = null;
        PreparedStatement ps = null;
        String sql = "INSERT INTO LOTEPRODUCTO (id_lote,id_producto,fecha_vencimiento,alto_caja,ancho_caja,largo_caja,cantidad_producto,peso_caja,id_ingreso) VALUES (?,?,?,?,?,?,?,?,?)";
        conn = daoHelper.dameConexion();
        ps = conn.prepareStatement(sql);
        ps.setInt(1, lote.getIdLote());
        ps.setInt(2, lote.getIdProducto());
        ps.setDate(3, lote.getFechaVencimiento());
        ps.setDouble(4,lote.getAltoCaja());
        ps.setDouble(5,lote.getAnchoCaja());
        ps.setDouble(6, lote.getLargoCaja());
        ps.setInt(7, lote.getCajasPorPallet());
        ps.setDouble(8, lote.getPesoCaja());
        ps.setInt(9, lote.getIdIngreso());
        ps.executeUpdate();
        ps.close();
        conn.close();
        return daoHelper.TRANSACCION_EXITOSA;
    }

    public ArrayList<beLote> queryLotesByFecha(String strFechaVencimientoDesde, String strFechaVencimientoHasta) throws Exception {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;

        int []contador = new int[7];
        String sql = "select id_Lote from loteProducto where fecha_Vencimiento='2012-01-01' ";

        contador[0] = 1;
        
        if (!strFechaVencimientoDesde.isEmpty()){
            sql += " AND FECHAINSCRIPCION >= CAST( ? AS DATE ) ";
            contador[1] = 1;
        }
        if (!strFechaVencimientoHasta.isEmpty()){
            sql += " AND FECHAINSCRIPCION <= CAST( ? AS DATE) ";
            contador[2] = 1;
        }
        
        conn = daoHelper.dameConexion();
        ps = conn.prepareStatement(sql);
        int j=0;
        for(int i=0; i<2; i++){
            if (contador[i]==1){
                j++;
                switch (i){                    
                    case 0:
                        ps.setString(j,strFechaVencimientoDesde);
                        break;
                    case 1:
                        ps.setString(j,strFechaVencimientoHasta);
                        break;                    
                }
            }
        }
        rs = ps.executeQuery();
        ArrayList<beLote> listaLotes = new ArrayList<beLote>();
        beLote lote = new beLote();
        while (rs.next()){
            lote.setIdLote(rs.getInt(1));
            lote.setIdProducto(rs.getInt(2));
            lote.setFechaVencimiento(rs.getDate(3));
            listaLotes.add(lote);
        }
        rs.close();
        ps.close();
        conn.close();
        return listaLotes;
    }

    public int contarLotesDeUnProducto(int idProducto) throws Exception{
            int cantLotes=-1;
            Connection conn = daoHelper.dameConexion();
            String sql = "SELECT COUNT(*) FROM LOTEPRODUCTO WHERE ID_PRODUCTO = ? ";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, idProducto);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                cantLotes=rs.getInt(1);
            }
            rs.close();
            ps.close();
            conn.close();
            return cantLotes;
    }


}
